package com.higgins.client.knowledge;

import java.util.Date;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.higgins.client.projectmanagement.ProjectItemDTO;
import com.higgins.server.knowledge.KnowledgeItem;

/**
 * The client side stub for the RPC service.
 */
@RemoteServiceRelativePath("knowledge")
public interface KnowledgeService extends RemoteService {
	List<KnowledgeItemDTO> retrieveTopLevelKnowledgeItems() throws IllegalArgumentException;
	List<KnowledgeItemDTO> retrieveKnowledgeItems(String level, Long parentId) throws IllegalArgumentException;
	List<KnowledgeItemDTO> retrievePreviousKnowledgeItems(Long parentId) throws IllegalArgumentException;
	List<KnowledgeItemDTO> retrieveRandomKnowledgeItemRelationships(Long parentId) throws IllegalArgumentException;
	List<Long> retrieveParentIds(Long parentId) throws IllegalArgumentException;
	Long insetKnowledgeItem(KnowledgeItemDTO item) throws IllegalArgumentException;
	Long updateKnowledgeItem(KnowledgeItemDTO item) throws IllegalArgumentException;
	Boolean deleteKnowledgeItem(Long id) throws IllegalArgumentException;
	Boolean checkAccess() throws IllegalArgumentException;
	KnowledgeItemDTO getKnowledgeItemById(Long id) throws IllegalArgumentException;
	Boolean insertKnowledgeAttempt(Long id, Integer score) throws IllegalArgumentException;
}
